package com.kws.tool.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.*;
import java.util.List;

/**
 * @author : zhangbenting
 * @date : 2024/11/30 10:34
 * @Version: 1.0
 */
@Data
@ApiModel(description = "微网测算(光储充一体化)输入实体")
public class LightStorageChargingDto {

    @ApiModelProperty(value = "安装区域", required = true)
    @NotNull(message = "用电类型不能为空")
    private String azqy;

    @ApiModelProperty(value = "安装详细地址", required = true)
    @NotBlank(message = "项目地址不能为空")
    private String azxxdz;

    @ApiModelProperty("充电桩建设面积")
    private String cdzjsmj;

    @ApiModelProperty(value = "屋顶面积", required = true)
    @NotBlank(message = "屋顶面积不能为空")
    private String wdmj;

    @ApiModelProperty(value = "用户类型", required = true)
    @NotBlank(message = "用户类型不能为空")
    private String yhlx;

    @ApiModelProperty(value = "充电桩数量", required = true)
    @NotBlank(message = "充电桩数量不能为空")
    private String cdzsl;

    @ApiModelProperty(value = "充电桩类型", required = true)
    @NotBlank(message = "充电桩类型不能为空")
    private String cdzlx;

    @ApiModelProperty(value = "服务费")
    @NotBlank(message = "服务费不能为空")
    private String fwf;

    @ApiModelProperty(value = "使用率")
    @NotBlank(message = "使用率不能为空")
    private String syl;

    @ApiModelProperty("总投资")
    @NotBlank(message = "总投资不能为空")
    private String ztz;

    @ApiModelProperty(value = "报装容量", required = true)
    @NotBlank(message = "报装容量不能为空")
    private String bzrl;

    @ApiModelProperty(value = "电压等级", required = true)
    @NotBlank(message = "电压等级不能为空")
    private String dydj;

    @ApiModelProperty(value = "用电方式", required = true)
    @NotBlank(message = "用电方式不能为空")
    private String fdfs;

    @ApiModelProperty(value = "运营年限")
    @NotBlank(message = "运营年限不能为空")
    private String yynx;

    @ApiModelProperty(value = "首年衰减")
    @NotBlank(message = "首年衰减不能为空")
    private String snsj;

    @ApiModelProperty(value = "逐年递减")
    @NotBlank(message = "逐年递减不能为空")
    private String zndj;

    @ApiModelProperty(value = "发电效率")
    @NotBlank(message = "发电效率不能为空")
    private String fdxl;

    @ApiModelProperty(value = "光储充一体化策略", required = true)
    private String gccythcl;

    @ApiModelProperty(value = "储能电池总容量", required = true)
    @NotBlank(message = "储能电池总容量不能为空")
    private String cndczrl;

    @ApiModelProperty(value = "每kw光伏所需面积", required = true)
    @NotBlank(message = "每kw光伏所需面积不能为空")
    private String mkwgfsxmj;

    @ApiModelProperty(value = "每kw光伏建设成本", required = true)
    @NotBlank(message = "每kw光伏建设成本不能为空")
    private String mkwgfjscb;

    @ApiModelProperty(value = "每kw储能电池容量", required = true)
    @NotBlank(message = "每kw储能电池容量不能为空")
    private String mkwcndcrl;

    @ApiModelProperty(value = "配电设备单价")
    @NotBlank(message = "配电设备单价不能为空")
    private String pdsbdj;

    @ApiModelProperty(value = "土建施工单价")
    @NotBlank(message = "土建施工单价不能为空")
    private String tjgsdj;

    @ApiModelProperty(value = "储能单位造价")
    @NotBlank(message = "储能单位造价不能为空")
    private String cndwzj;

    @ApiModelProperty(value = "单个充电桩功率")
    @NotBlank(message = "单个充电桩功率不能为空")
    private String dgccdzgl;

    @ApiModelProperty(value = "年利用小时数")
    @NotBlank(message = "年利用小时数不能为空")
    private String nlyxss;

    @ApiModelProperty(value = "放电时长")
    @NotBlank(message = "放电时长不能为空")
    private String fdsc;

    @ApiModelProperty(value = "放电效率")
    @NotBlank(message = "放电效率不能为空")
    private String fangdxl;

    @ApiModelProperty(value = "电池寿命")
    @NotBlank(message = "电池寿命不能为空")
    private String dcsm;

    @ApiModelProperty(value = "使用年限")
    @NotBlank(message = "使用年限不能为空")
    private String synx;

    @ApiModelProperty(value = "上网电价")
    @NotBlank(message = "上网电价不能为空")
    private String swdj;

    @ApiModelProperty(value = "峰时电价")
    @NotBlank(message = "峰时电价不能为空")
    private String fsdj;

    @ApiModelProperty(value = "谷时电价")
    @NotBlank(message = "谷时电价不能为空")
    private String gsdj;

    @ApiModelProperty(value = "加权电价")
    @NotBlank(message = "加权电价不能为空")
    private String jqdj;

    @ApiModelProperty(value = "充电桩平均使用时长", required = true)
    @NotBlank(message = "充电桩平均使用时长不能为空")
    private String cdzpjsysc;

    @ApiModelProperty(value = "单个充电桩单价")
    @NotBlank(message = "单个充电桩单价不能为空")
    private String dgcdzdj;

    @ApiModelProperty(value = "变压器容量", required = true)
    @NotBlank(message = "变压器容量不能为空")
    private String byqrl;

//    @ApiModelProperty(value = "地址", required = true)
//    @NotBlank(message = "地址不能为空")
//    private String address;
//
//    @ApiModelProperty(value = "屋顶类型，可选值为平房、别墅", required = true)
//    @NotBlank(message = "屋顶类型不能为空")
//    private String roofType;
//
//    @ApiModelProperty(value = "用户类型，可选值为个人、企业", required = true)
//    @NotBlank(message = "用户类型不能为空")
//    private String userType;
//
//    @ApiModelProperty(value = "屋顶面积", required = true)
//    @Positive(message = "屋顶面积必须是正数")
//    private double roofArea;
//
//    @ApiModelProperty(value = "用电方式，可选值为自发自用余电不上网、自发自用余电上网、全额上网、余电上网", required = true)
//    @NotBlank(message = "用电方式不能为空")
//    private String powerUsageMode;
//
//    @ApiModelProperty(value = "年用电量", required = true)
//    @PositiveOrZero(message = "年用电量不能为负数")
//    private double annualPowerConsumption;
//
//    @ApiModelProperty(value = "用电类型，可选值为400V/10KV", required = true)
//    @NotBlank(message = "用电类型不能为空")
//    private String powerType;
//
//    @ApiModelProperty(value = "充电桩数量", required = true)
//    @PositiveOrZero(message = "充电桩数量不能为负数")
//    private int chargingPileCount;
//
//    @ApiModelProperty(value = "充电桩类型", required = true)
//    @NotBlank(message = "充电桩类型不能为空")
//    private String chargingPileType;
//
//    @ApiModelProperty(value = "服务费，默认值8元/度（深圳）")
//    @DecimalMin(value = "0.0", inclusive = true, message = "服务费不能为负数")
//    private double serviceFee;
//
//    @ApiModelProperty(value = "变压器容量，非必填项，默认全部新装变压器")
//    @DecimalMin(value = "0.0", inclusive = true, message = "变压器容量不能为负数")
//    private double transformerCapacity;
//
//    @ApiModelProperty(value = "使用率，默认20%（深圳地区充电桩数量评估）")
//    @DecimalMin(value = "0.0", inclusive = true, message = "使用率不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "使用率不能超过100%")
//    private double usageRate;
//
//    @ApiModelProperty(value = "报装容量", required = true)
//    @PositiveOrZero(message = "报装容量不能为负数")
//    private double installationCapacity;
//
//    @ApiModelProperty(value = "电压等级，可选值为400V/10KV", required = true)
//    @NotBlank(message = "电压等级不能为空")
//    private String voltageLevel;
//
//    @ApiModelProperty(value = "投资方式，默认设置及选择输入，包括自投自建、第三方投资，默认自投资建（贷款、全款），第三方投资", required = true)
//    @NotBlank(message = "投资方式不能为空")
//    private String investmentMethod;
//
//    @ApiModelProperty(value = "光伏板安装方式（铺设方式），选项卡，最佳倾角、平铺", required = true)
//    @NotBlank(message = "光伏板安装方式不能为空")
//    private String pvInstallationMethod;
//
//    @ApiModelProperty(value = "运营年限，默认值为25年")
//    @Min(value = 1, message = "运营年限必须大于0")
//    private int operationalYears;
//
//    @ApiModelProperty(value = "首年衰减，默认值2%")
//    @DecimalMin(value = "0.0", inclusive = true, message = "首年衰减不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "首年衰减不能超过100%")
//    private double firstYearDegradation;
//
//    @ApiModelProperty(value = "首年后逐年衰减，默认值0.3%")
//    @DecimalMin(value = "0.0", inclusive = true, message = "逐年衰减不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "逐年衰减不能超过100%")
//    private double subsequentYearDegradation;
//
//    @ApiModelProperty(value = "发电效率，默认值80%")
//    @DecimalMin(value = "0.0", inclusive = true, message = "发电效率不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "发电效率不能超过100%")
//    private double powerGenerationEfficiency;
//
//    @ApiModelProperty(value = "光储充一体化策略，默认经济性最优模式，可选光伏消纳最大模式/峰谷套利模式/需求响应模式/虚拟电厂模式", required = true)
//    @NotBlank(message = "光储充一体化策略不能为空")
//    private String pvStorageStrategy;
//
//    @ApiModelProperty(value = "每KW光伏建设成本，默认设置及手动输入，每平米光伏建设成本=光伏建设总成本/光伏板安装面积")
//    @DecimalMin(value = "0.0", inclusive = true, message = "光伏建设成本不能为负数")
//    private double pvConstructionCostPerKW;
//
//    @ApiModelProperty(value = "气象源（光照数据源）", required = true)
//    @NotBlank(message = "气象源不能为空")
//    private String weatherSource;
//
//    @ApiModelProperty(value = "组件类型", required = true)
//    @NotBlank(message = "组件类型不能为空")
//    private String componentType;
//
//    @ApiModelProperty(value = "每KW光伏运维成本，默认设置及手动输入，每平米光伏运维成本=光伏运维总成本/光伏板安装面积")
//    @DecimalMin(value = "0.0", inclusive = true, message = "光伏运维成本不能为负数")
//    private double pvMaintenanceCostPerKW;
//
//    @ApiModelProperty(value = "上网电价-上网基本电价，默认设置及手动输入，可为空，支持自动导入")
//    @DecimalMin(value = "0.0", inclusive = true, message = "上网电价不能为负数")
//    private double internetElectricityPrice;
//
//    @ApiModelProperty(value = "分成比例，默认8折")
//    @DecimalMin(value = "0.0", inclusive = true, message = "分成比例不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "分成比例不能超过100%")
//    private double sharingRatio;
//
//    @ApiModelProperty(value = "满发小时数，默认数值带入")
//    @PositiveOrZero(message = "满发小时数不能为负数")
//    private int fullPowerHours;
//
//    @ApiModelProperty(value = "加权电价，默认数值带入")
//    @DecimalMin(value = "0.0", inclusive = true, message = "加权电价不能为负数")
//    private double weightedElectricityPrice;
//
//    @ApiModelProperty(value = "用电类型，选择企业后需要填写，个人默认10KV")
//    private String electricityType;
//
//    @ApiModelProperty(value = "运营时间，默认值300")
//    @PositiveOrZero(message = "运营时间不能为负数")
//    private int operationalTime;
//
//    @ApiModelProperty(value = "电池寿命，默认值6000")
//    @PositiveOrZero(message = "电池寿命不能为负数")
//    private int batteryLife;
//
//    @ApiModelProperty(value = "使用年限，默认值10年")
//    @PositiveOrZero(message = "使用年限不能为负数")
//    private int usageYears;
//
//    @ApiModelProperty(value = "放电深度，默认值90%")
//    @DecimalMin(value = "0.0", inclusive = true, message = "放电深度不能为负数")
//    @DecimalMax(value = "1.0", inclusive = true, message = "放电深度不能超过100%")
//    private double dischargeDepth;
//
//    @ApiModelProperty(value = "储电池建设成本，默认设置及手动输入")
//    @DecimalMin(value = "0.0", inclusive = true, message = "储电池建设成本不能为负数")
//    private double batteryConstructionCost;
//
//    @ApiModelProperty(value = "储电池运维成本，默认设置及手动输入")
//    @DecimalMin(value = "0.0", inclusive = true, message = "储电池运维成本不能为负数")
//    private double batteryMaintenanceCost;
//
//    @ApiModelProperty(value = "企业分成，默认值1元")
//    @DecimalMin(value = "0.0", inclusive = true, message = "企业分成不能为负数")
//    private double enterpriseShare;
//
//    @ApiModelProperty(value = "单位造价，默认值1元")
//    @DecimalMin(value = "0.0", inclusive = true, message = "单位造价不能为负数")
//    private double unitCost;
//
//    @ApiModelProperty(value = "基本电费类型", required = true)
//    @NotBlank(message = "基本电费类型不能为空")
//    private String basicElectricityType;
//
//    @ApiModelProperty(value = "综合单价，默认值慢充（7KW）1500、快充（60KW）20000、超充（120KW）50000")
//    @DecimalMin(value = "0.0", inclusive = true, message = "综合单价不能为负数")
//    private double comprehensivePrice;
//
//    @ApiModelProperty(value = "充电桩单价，默认值慢充（7KW）1500、快充（60KW）20000、超充（120KW）50000")
//    @DecimalMin(value = "0.0", inclusive = true, message = "充电桩单价不能为负数")
//    private double chargingPilePrice;
//
//    @ApiModelProperty(value = "配电设备单价（每KVA），默认值150")
//    @DecimalMin(value = "0.0", inclusive = true, message = "配电设备单价不能为负数")
//    private double distributionEquipmentPricePerKVA;
//
//    @ApiModelProperty(value = "土建施工单价（每KVA），默认值1000/平，按水泥地、车棚、休息室条件估算")
//    @DecimalMin(value = "0.0", inclusive = true, message = "土建施工单价不能为负数")
//    private double civilConstructionPricePerKVA;
//
//    @ApiModelProperty(value = "年运营单价，默认值1000/平，按水泥地、车棚、休息室条件估算")
//    @DecimalMin(value = "0.0", inclusive = true, message = "年运营单价不能为负数")
//    private double annualOperationPrice;

}
